package com.sfx.算法专题.双指针.左右指针;

/**
 * Created with IntelliJ IDEA.
 * Description: https://leetcode.cn/problems/container-with-most-water/
 * User: sfx
 * Date: 2023-07-18
 * Time: 14:55
 */
public class Code_1_maxArea {
    /**
     * 首先无论是 i 指针往右移动还是 j 指针往左移动都会导致 w 变小,
     * 所以想要能够枚举到更大的面积，我们应该让h在指针移动后变大。
     * 我们知道面积的取值 取决于短板,只要短板可能变大,面经就有可能变大
     * 所以我们固定两个指针->左右指针,有可能移动短板,有可能移动长版
     * 若向内 移动短板 ，水槽的短板 min(h[i], h[j])可能变大，因此下个水槽的面积 可能增大 。
     * 若向内 移动长板 ，水槽的短板 min(h[i], h[j])不变或变小，因此下个水槽的面积 一定变小 。
     */
    static class Solution {
        public int maxArea(int[] h) {
            //两者间距最大,两者足够高
            //对撞指针-两者间距最大
            int res = 0;
            int l = 0;
            int r = h.length-1;
            while(l<r) {
                res = Math.max(res,Math.min(h[l],h[r]) * (r-l));
                if(h[l] <= h[r]) {
                    l++;
                }else {
                    r--;
                }
            }
            return res;
        }
    }
}